
Clear[ParametricPlotColor]
Options[ParametricPlotColor]=Options[ParametricPlot];
Attributes[ParametricPlotColor] = {HoldAll};
automatic[x_, value_] := If[x === Automatic, value, x]; 
ParametricPlotColor[xy_List,{t_,t0_,t1_},opt___]:=
	Module[{color,xy2,xy2a,ddt,options,pltsty,pltopt,nonopt},
				options=List[opt, Sequence@@Options[ParametricPlotColor]];
		ddt = automatic[(t1 - t0)/PlotPoints/.options, (t1 - t0)/30]; 
	pltsty=automatic[PlotStyle/.options, {}]; 
		nonopt={PlotPoints,PlotDivision,Compiled,MaxBend,PlotStyle};
	pltopt=Complement[ 
        options /.(
            nonopt /.a_Symbol->((a->b_)->a)/.((List->b_)->List) ->List),nonopt];
	Return[
		Which[Length[Dimensions[xy]]==1 && Length[xy]==2,
			{ xy2=xy /.t->u; xy2a=xy2/.(u->u+ddt);
			Show[Graphics[
				Table[{pltsty,
					Line[{xy2,xy2a}]},
					{u,t0,t1-ddt,ddt}]],
      				Sequence@@pltopt]},
		      Length[Dimensions[xy]]==1 && Length[xy]==3,
			{color=xy[[3]]/. t:>u; xy2=Take[xy,2]/.t:>u; xy2a=xy2/.(u->u+ddt);
			Show[Graphics[
				Table[{pltsty,color,
             				Line[{xy2,xy2a}]},
					{u,t0,t1-ddt,ddt}]],
				Sequence@@pltopt]},
		      True,
			Show[
				Map[Graphics[
					If[Length[#]==2,
					Table[ Join[ pltsty,{Line[{#/.t->u,(#/.t->u+ddt)}]}],
						{ u,t0,t1-ddt,ddt}],
					Table[Join[ pltsty,{#[[3]] /.t->u,
                     				Line[{Drop[#,-1]/.t->u,(Drop[#,-1]/.t->u+ddt)}]}],
						{ u,t0,t1-ddt,ddt}]]
				    ]&,xy],
				Sequence@@pltopt] 
		]
	];
	];

